//
//  MixingViewController.h
//  CocoaSynth
//
//  Created by Thomas Dupont on 18/02/10.
//  Copyright 2010 Apple Inc. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@protocol FactoryProtocol;
@protocol SequencerProtocol;

@class ModuleViewController;
@class ConnectorLayoutViewController;
@class MixingView;
@class PortInViewController;
@class PortOutViewController;
@class PortViewController;
@class ParametersViewController;
@class KeyboardViewController;

@interface MixingViewController : NSViewController{
	MixingView* mixingView;
	NSMutableSet* modules;
	ConnectorLayoutViewController* connectors;
	NSInteger nbModules;
	ParametersViewController* parameters;
	ModuleViewController* highlightedModule;
	id<SequencerProtocol> sequencer;
	KeyboardViewController* keyboard;
}

@property (retain) ParametersViewController* parameters;
@property (assign) id<SequencerProtocol> sequencer;
@property (retain) KeyboardViewController* keyboard;

- (void)addModule:(ModuleViewController*)aModule;
- (void)removeModule:(ModuleViewController*)aModule;

- (void)selectPortIn:(PortInViewController*)aPort;
- (void)selectPortOut:(PortOutViewController*)aPort;
- (void)unselectPorts;
- (void)disconnectPort:(PortViewController*)aPort;
- (void)refresh;
- (void)removeParameterView;
- (void)displayParameterView:(ModuleViewController*)aModule;
- (void)bringSubviewToFront:(NSView *)subview;

@end
